package com.cxd.app.service.tools;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.cxd.app.entity.base.BankCardBase;
import com.cxd.app.entity.base.UserBase;
import com.cxd.base.common.constants.YeePayConstants;
import com.cxd.base.util.IdGenerator;
import com.cxd.message.exception.AppConstants;

/**
 * <一句话功能简述> <功能详细描述>
 * @author wtj
 * @date 2015年12月23日 下午10:49:16
 * @company CXD
 * @version [Copyright (c) 2015 V001]
 */
public class YeePayParams {
	
	/**
	 * 实名认证
	 * @author wtj
	 * @date 2015年12月23日下午10:50:33
	 * @param user
	 * @return
	 */
	public static String realnameAuthenticationParams(UserBase user){
		StringBuilder content = new StringBuilder();
		content.append("<?xml version='1.0' encoding='UTF-8' standalone='yes'?>");
		content.append("<request platformNo='"
				+ YeePayConstants.Config.MER_CODE + "'>");
		// 商户平台会员标识:会员在商户平台唯一标识
		content.append("<platformUserNo>" + user.getId() + "</platformUserNo>");
		// 请求流水号
		content.append("<requestNo>"+YeePayConstants.RequestNoPre.CREATE_ACCOUNT + user.getId() + "</requestNo>");
		// 会员真实姓名
		content.append("<realName>" + user.getRealname() + "</realName>");
		// 身份证类型
		content.append("<idCardType>G2_IDCARD</idCardType>");
		// 身份证号
		content.append("<idCardNo>" + user.getIdCard() + "</idCardNo>");
		// 手机号
		content.append("<mobile>" + user.getMobileNumber() + "</mobile>");
		// 邮箱
		content.append("<email>" + user.getEmail() + "</email>");
		/** 回调通知 URL */
		content.append("<callbackUrl>"
				+ AppConstants.ResponseWebUrl.PRE_RESPONSE_URL+ YeePayConstants.OperationType.CREATE_ACCOUNT
				+ "</callbackUrl>");
		/* 服务器通知 URL */
		content.append("<notifyUrl>"
				+ AppConstants.ResponseS2SUrl.PRE_RESPONSE_URL+ YeePayConstants.OperationType.CREATE_ACCOUNT 
				+ "</notifyUrl>");
		content.append("</request>");
		return content.toString();
	}
	
	/**
	 * 重置易宝交易密码
	 * @author wtj
	 * @date 2015年12月23日下午10:57:43
	 * @param user
	 * @return
	 */
	public static String resetYeePayPsw(UserBase user,AppYeePay p){
		StringBuilder content = new StringBuilder();
		content.append("<?xml version='1.0' encoding='UTF-8' standalone='yes'?>");
		content.append("<request platformNo='"+ YeePayConstants.Config.MER_CODE + "'>");
		// 商户平台会员标识:会员在商户平台唯一标识
		content.append("<platformUserNo>"+user.getId()+"</platformUserNo>");
		// 请求流水号
		content.append("<requestNo>"+ p.getRequestNo() + user.getId()+"</requestNo>");
		//  回调通知 URL
		content.append("<callbackUrl>"+p.getCallbackUrl()+"</callbackUrl>");
		content.append("</request>");
		return content.toString();
	}
	
	/**
	 * 重置易宝手机号
	 * @author wtj
	 * @date 2015年12月23日下午10:57:43
	 * @param user
	 * @return
	 */
	public static String resetYeePayMobile(UserBase user,AppYeePay p){
		StringBuilder content = new StringBuilder();
		content.append("<?xml version='1.0' encoding='UTF-8' standalone='yes'?>");
		content.append("<request platformNo='"+ YeePayConstants.Config.MER_CODE + "'>");
		// 商户平台会员标识:会员在商户平台唯一标识
		content.append("<platformUserNo>"+user.getId()+"</platformUserNo>");
		// 请求流水号
		content.append("<requestNo>"+ p.getRequestNo() + user.getId()+"</requestNo>");
		//  回调通知 URL
		content.append("<callbackUrl>"+p.getCallbackUrl()+"</callbackUrl>");
		content.append("<notifyUrl>"+p.getNotifyUrl()+"</notifyUrl>");
		content.append("</request>");
		return content.toString();
	}
	
	/**
	 * 绑定银行卡参数
	 * @author wtj
	 * @date 2015年12月24日下午7:17:12
	 * @param bankCard
	 * @return
	 */
	public static String bindBankCardParams(BankCardBase bankCard){
		StringBuffer content = new StringBuffer();
		content.append("<?xml version='1.0' encoding='utf-8'?>");
		// 商户编号:商户在易宝唯一标识
		content.append("<request platformNo='"+ YeePayConstants.Config.MER_CODE + "'>");
		// 商户平台会员标识:会员在商户平台唯一标识
		content.append("<platformUserNo>" + bankCard.getUserId()+ "</platformUserNo>");
		// 请求流水号 银行卡的 id
		content.append("<requestNo>"+ IdGenerator.randomUUID()+ "</requestNo>");
		content.append("<callbackUrl>"+ AppConstants.ResponseWebUrl.PRE_RESPONSE_URL+ YeePayConstants.OperationType.BINDING_YEEPAY_BANKCARD+ "</callbackUrl>");
		/* 服务器通知 URL:服务器通知 URL */
		content.append("<notifyUrl>"+ AppConstants.ResponseS2SUrl.PRE_RESPONSE_URL+ YeePayConstants.OperationType.BINDING_YEEPAY_BANKCARD+ "</notifyUrl>");
		// 提现金额:如果传入此，将使用该金额提现且用户将不可更改
		content.append("</request>");

		return content.toString();
	}
	private static Map<String,String> bankCardMap = new HashMap<String,String>();
	static{
		bankCardMap.put("交通银行","BOCO");
		bankCardMap.put("中国光大银行","CEB");
		bankCardMap.put("上海浦东发展银行","SPDB");
		bankCardMap.put("中国农业银行","ABC");
		bankCardMap.put("中信银行","ECITIC");
		bankCardMap.put("中国建设银行","CCB");
		bankCardMap.put("民生银行","CMBC");
		bankCardMap.put("平安银行","SDB");
		bankCardMap.put("中国邮政储蓄","PSBC");
		bankCardMap.put("招商银行","CMBCHINA");
		bankCardMap.put("兴业银行","CIB");
		bankCardMap.put("中国工商银行","ICBC");
		bankCardMap.put("中国银行","BOC");
		bankCardMap.put("北京银行","BCCB");
		bankCardMap.put("广发银行","GDB");
		bankCardMap.put("华夏银行","HX");
		bankCardMap.put("西安市商业银行","XAYH");
		bankCardMap.put("上海银行","SHYH");
		bankCardMap.put("天津市商业银行","TJYH");
		bankCardMap.put("深圳农村商业银行","SZNCSYYH");
		bankCardMap.put("北京农商银行","BJNCSYYH");
		bankCardMap.put("杭州市商业银行","HZYH");
		bankCardMap.put("昆仑银行","KLYH");
		bankCardMap.put("郑州银行","ZHENGZYH");
		bankCardMap.put("温州银行","WZYH");
		bankCardMap.put("汉口银行","HKYH");
		bankCardMap.put("南京银行","NJYH");
		bankCardMap.put("厦门银行","XMYH"); 
		bankCardMap.put("南昌银行","NCYH"); 
		bankCardMap.put("江苏银行","JISYH"); 
		bankCardMap.put("东亚银行(中国)","HKBEA"); 
		bankCardMap.put("成都银行","CDYH");
		bankCardMap.put("宁波银行","NBYH"); 
		bankCardMap.put("长沙银行","CSYH"); 
		bankCardMap.put("河北银行","HBYH"); 
		bankCardMap.put("广州银行","GUAZYH"); 
	}
	/**
	 * 获取银行卡编号
	 * @author wtj
	 * @date 2015年12月26日下午8:22:11
	 * @param bankCode
	 * @param bankName
	 * @return
	 */
	public static String getBankCode(String bankCode,String bankName){
		if(StringUtils.isNotBlank(bankCode)){
			return bankCode;
		}else{
			bankCode = bankCardMap.get(bankName);
			if(StringUtils.isBlank(bankCode)){
				return "default";
			}else{
				return bankCode;
			}
		}
	}
}
